Jagged array
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
In computer science, a jagged array, also known as a ragged array cite-ref-1[1] or irregular array cite-ref-2[2] is an array of arrays of which the member arrays can be of different lengths,cite-ref-libertymacdonald2008-3-0[3] producing rows of jagged edges when visualized as output. In contrast, two-dimensional arrays are always rectangularcite-ref-box2002-4-0[4] so jagged arrays should not be confused with multidimensional arrays, but the former is often used to emulate the latter.
Arrays of arrays in languages such as Java, PHP, Python (multidimensional lists), Ruby, C#.NET, Visual Basic.NET, Perl, JavaScript, Objective-C, Swift, and Atlas Autocode are implemented as Iliffe vectors.
Contents
• Examples
• See also
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Examples
int[][] c;
c = new int[2][]; // creates 2 rows
c[0] = new int[5]; // 5 columns for row 0
c[1] = new int[3]; // create 3 columns for row 1
int jagged_row0[] = {0,1};
int jagged_row1[] = {1,2,3};
int *jagged[] = { jagged_row0, jagged_row1 };
In C/C++, jagged arrays can also be created (on the heap) with an array of pointers:
int *jagged[5];
jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);
using namespace System;
int main()
{
array<array<double> ^> ^ Arrayname = gcnew array <array<double> ^> (4); // array contains 4
//elements
return 0;
}
In Fortran, a jagged array can be created using derived types with allocatable component(s):
type :: Jagged_type
integer, allocatable :: row(:)
end type Jagged_type
type(Jagged_type) :: Jagged(3)
Jagged(1)%row = [1]
Jagged(2)%row = [1,2]
Jagged(3)%row = [1,2,3]
In Python, jagged arrays are not native but one can use list comprehensions to create a multi-dimensional list which supports any dimensional matrix:cite-ref-8[8]
multi_list_3d = [[[] for i in range(3)] for i in range(3)]
# Produces: [[[], [], []], [[], [], []], [[], [], []]]
multi_list_5d = [[[] for i in range(5)] for i in range(5)]
# Produces: [[[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []]]
See also
References
cite-note-22. ↑ Handbook of Data Structures and Applications. CRC Press. 2004.
cite-note-55. ↑ "Jagged Array in Java - GeeksforGeeks". GeeksforGeeks. 2016-02-03. Retrieved 2018-08-13.
cite-note-77. ↑ "Jagged Arrays". FunctionX. Retrieved 26 November 2014.
cite-note-88. ↑ "Lists in Python Demystified". Alvin.io. Archived from the original on 15 October 2016. Retrieved 31 January 2016.